package com.fdb.efp.nls.service.impl;

import com.fdb.efp.nls.service.facade.AccLoanService;
import com.fdb.efp.nls.service.vo.AccLoanVO;
import com.fdb.efp.nls.service.facade.ColltTaskCommonService;
import com.fdb.efp.nls.service.facade.ColltTaskInfoService;
import com.fdb.efp.nls.service.vo.ColltTaskInfoVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.Objects;

/**
 * 需求编号【2019D0509】
 *
 * 贷后催收公共方法接口实现
 * @author qiuyf
 * @version 0.1 初始为0.1,后续变更则修改
 * @since 2020/1/14 16:34
 */
@Service("colltTaskCommonService")
public class ColltTaskCommonServiceImpl implements ColltTaskCommonService {

    @Autowired
    @Qualifier("colltTaskInfoService")
    private ColltTaskInfoService colltTaskInfoService;

    @Autowired
    @Qualifier("accLoanService")
    private AccLoanService accLoanService;


    @Override
    public BigDecimal getUnpdPrinBalByBillNo(String billNo) throws Exception {
        BigDecimal result = null;
        AccLoanVO accLoanVO = new AccLoanVO();
        accLoanVO.setBillNo(billNo);
        accLoanVO = accLoanService.queryByPk(accLoanVO);
        if(Objects.nonNull(accLoanVO)){
            if(null == accLoanVO.getUnpdPrinBal()){
                throw new Exception("根据借据编号:" + billNo + "，获取到借据的拖欠本金为空！");
            }else
                result = accLoanVO.getUnpdPrinBal();
        } else{
            throw new Exception("根据借据编号:" + billNo + "，获取到借据信息为空！");
        }
        return result;
    }

    @Override
    public BigDecimal getUnpdPrinBalByColltTaskNo(String colltTaskNo) throws Exception {
        ColltTaskInfoVO colltTaskInfoVO = getColltTaskInfoByPk(colltTaskNo);
        if(Objects.nonNull(colltTaskInfoVO)){
            return getUnpdPrinBalByBillNo(colltTaskInfoVO.getLoanNo());
        }else{
            throw new Exception("通过催收任务编号:" + colltTaskNo + "，获取到的催收任务信息为空！");
        }
    }

    private ColltTaskInfoVO getColltTaskInfoByPk(String colltTaskNo){
        ColltTaskInfoVO colltTaskInfoVO = new ColltTaskInfoVO();
        colltTaskInfoVO.setColltTaskNo(colltTaskNo);
        return colltTaskInfoService.queryByPk(colltTaskInfoVO);
    }

}
